Computers are systems composed of various components. Computers often have a motherboard, one or more processors, random access memory (RAM), a hard drive, an optical disc drive, Ethernet, modem, universal serial bus (USB) and other ports, as well as sound, video and other cards. Operating systems are used to interconnect and control computer components, as well as connectable peripheral devices. Operating systems (OS) can also provide a graphical user interface (GUI) to enable the user to more easily interact with applications and with the computer components directly.
Numerous operating systems are in use today, including MICROSOFT Windows®, Macintosh® OS, Unix, Linux, as well as handheld device operating systems such as PalmOS®. Many of the above-mentioned operating systems employ a GUI to provide the user with a graphical interface as opposed to a text-based interface. When the user opens an application, the GUI typically displays a square- or rectangular-shaped box containing text, graphics and selectable buttons or tabs. In many GUI's, the text describes what action will occur if the graphic or button is selected. Such GUI boxes are commonly called windows.
Often a user will open multiple applications, each represented in its own window. In addition, each application is capable of opening its own windows. The OS monitors which window should be displayed on the forefront by tracking when, who or what opened each window. For example, the root window, often called the desktop window, is usually loaded by the OS when the computer is started. The desktop window displays the OS GUI and is typically not closed until the computer is shut down. All other windows, whether opened by the user or by an application, are displayed on top of the desktop window, where each application window subsequently opened is displayed on top of the other windows in the order the applications were opened.
Some applications present unique challenges to an OS when the OS is determining which window to display on the forefront (“window management”). For example, a user may have two applications open, and actively using Application One. The OS displays Application One in the foreground. However, in the background Application Two may be completing a task with the instructions to display a “Task Completed” window when finished with the task. Once Application Two finishes, the OS will display the “Task Completed” window on the foreground—on top of the Application One window. This example, though illustrative, is quite basic. Window management challenges are much more prevalent when the user is running applications such as a remote desktop application or remote applications.
Remote desktop applications, such as Citrix® and MICROSOFT® Terminal Services allow a client to log in to a remote server that creates a virtual workstation on the remote server and transmits a representation of the virtual workstation to the client's computer. The client can then open applications on the virtual workstation via a window opened by the remote desktop application on the client's computer. Both the virtual workstation and the client's local workstation may open new windows or minimize existing windows.
Similarly, remote applications may be initiated by a user on the client's computer where each remote application opens in a new window, which may exist independently of any remote desktop application. For example, a user may initiate a local application as well as one or more remote applications. As the user interacts with the applications, confusion may arise as to which application should be displayed on the forefront of the user's desktop, the remote application window or the local application window. Nevertheless, maintaining a seamless interaction between local applications on the client's desktop and remote applications opened remotely is difficult, yet key to providing a positive user experience.
It should be noted that the subject matter claimed herein is not limited to embodiments that solve any disadvantages or that operate only in environments such as those described above. Rather, this background is only provided to illustrate one exemplary technology area where some embodiments described herein may be practiced.